#变量
def fav(*fru):
    print('我喜欢的水果有：')
    for i in fru:
        print(i)

fav('苹果')#传递1个参数
fav('苹果','桃子','西瓜')#传递3个参数
fav('菠萝','香蕉','橘子','哈密瓜','草莓','葡萄')#传递6个参数



#参数的值大于等于2，如果声明函数有其他形参，通常会把可变长函数放最后
def show(a,b,*l):
    print(a)
    print(b)
    print(l)

show(1,2,4,5,6,7,9,56)



def rectangle():
    a=int(input('请输入矩形的长(整数值)：'))
    b=int(input('请输入矩形的宽(整数值)：'))
    S=a*b
    C=2*(a+b)
    print('该矩形面积为：',S)
    print('该矩形周长为：', C)
rectangle()


def add(a,b):
    c=a+b
    return  c,a,b,a*b,a-b

d=add(1,2)
print(d)


#变量的作用域
def fun():
    a=28
    return a
a=10
print(a)
print(fun())

def por(*a):
    for i in a:
        if i % 2==0:
            print('该数据是偶数:',)
            if i > 10:
                print('该数据大于10')
por(1,2,3,4,7,8,9,80,60,30)

##利用递归计算100的阶乘 100
def f(n):
    if n <=1:
        return 1
    else:
        return n*f(n-1) #100*f(99)  100*99*98*....*2*1


num = int(input('请输入一个正整数:'))#输入一个100
s = f(num)
print(num,'的阶乘是：',s)#5*4*3*2*1=120


#例题1：利用递归计算1~100相加之和
def sum(n):
    if n==1:
        return 1
    else:
        return n+sum(n-1)


print('1~100相加的和为',sum(100))

#计算斐波那契数列F(0)=0,F（n)=F(n-1)+F(n-2)(n>=2)的第n项
def fibo(n):
    if n <=2:
        return 1
    else:
        return fibo(n-1)+fibo(n-2)


print('斐波那锲数列的{}项为{}'.format(7,fibo(7)))

##匿名函数
##<函数名>=lambda<参数列表>:<表达式>
#使用匿名函数实现a+b+c
sum = lambda a,b,c:a+b+c
print(sum(1,2,3))

#编写lambda函数，参数为正方形的边长m，输出正方形的面积
fun=lambda m: m**2
print(fun(5))